#include "Sales_item.h"
#include "applicationStack.h"
#include "test.h"
#include <fstream>
#include <initializer_list>
#include <iostream>
#include <stack>
#include <vector>

// int fact(int val){
//    int ret = 1;
//    while(val!=1){
//        ret *= val;
//        --val;
//    }
//    return ret;
//}

// size_t count_calls(){
//    static size_t crr;
//    return ++crr;
//}

// void n(int &k){
//    k = 0;
//}

// void n (int &k, int &m){
//    int n;
//    n = k;
//    k = m;
//    m = n;
//}

// void error_mes(std::initializer_list<string> li){
//    for (auto k = li.begin(); k != li.end(); ++k){
//        cout << *k << " ";
//    cout << endl;
//    }
//}

// bool twoStrings(const string &q, const string &w){
//    if (q == w){
//        return q==w;
//    } else{
//        size_t m;
//        m = ((q.size()<w.size()) ? q.size() : w.size());
//        for (decltype(m) i = 0; i != m; ++i){
//            if (q[1] != w[1]){
//                return false;
//            }
//        }
//    }
//}

// int func(){return 2;}

int main() {
  // hw
  ifstream hwFile;
  hwFile.open("../test_data0.txt", ios::in);
  cout << hwFile.good() << endl;
  string line;
  while (getline(hwFile, line)) {
    cout << line << endl;
  }

  //  double k, m;
  //  double p[] = {2, 4, 5, 1, 8, 80, 9, 0, 0};
  //    double (&q)[7] = p;
  //    simpleSorting(p, end(p)-begin(p));

  //    vector<double> k = {3,5,7,3,9,5,2};
  //    quickSort(0,6,k);
  //    for (auto &i : k){
  //        cout << i << ' ';
  //    }
  //    cout << endl;

  //  mergeSort(p, 0, end(p) - begin(p));
  //  for (auto &i : p) {
  //    cout << i << ' ';
  //  }
  //  cout << endl;

  //////// 测试进制
  //
  //  stack<char> S;
  //  convert(S, 1024, 2);
  //  while (!S.empty()) {
  //    cout << S.top();
  //    S.pop();
  //  }
  //  cout << endl;

  /////// 测试括号匹配

  //  char m[] = {'(', ')', '(', ')', '(', '(', '(', ')', ')', ')'};
  //  auto t = end(m) - begin(m);
  //  cout << paren(m, 0, end(m) - begin(m)) << endl;

  //// 测试栈混洗问题

  //  int a[] = {1, 2, 3};
  //  int c[] = {3, 1, 2};
  //  cout << stackMixedWash(a, c, 0, 3) << endl;

  ////测试中缀表达式
  //  cout << '\0' << endl;
  //  char s[] = {'1', '.', '1', '^', '2'};
  //  cout << operation(s) << endl;

  //    cout << bestFind(p, end(p)-begin(p), 8) << endl;

  //    max2(p,0,8,k,m);
  //    cout << k << " "<< m <<endl;

  //    cout << fib2(100) << endl;

  //    char s1[] = "didactical";
  //    char s1[] = "ss";
  //    char s2[] = "advantage";
  //    char s2[] = "ss";
  //    cout << publicSubsequence2(s1, s2, end(s1) - begin(s1), end(s2) -
  //    begin(s2)) << endl;

  //    cout << end(s1) - begin(s1) << endl;

  //    int k[] = {1,3};
  //    print(k,2);

  //    cout << (p==begin(p)) <<endl;
  //    int k = func();

  //    cout << k << endl;

  //    int (*func(int i))[10];
  //    auto func(int i) -> int(*)[10];
  //    int odd[] = {1};
  //    decltype(odd) *func(int i);
  //    using k = int [10];
  //    k* func(int i);

  //    int a[10];
  //    int (*p)[10] = &a;
  //    int (*q)[10];
  //    q = &a;
  //    bool k = (p==q);
  //    cout << k << endl;

  //    string k = "ssss", m = "ssssss";
  //    twoStrings(k,m);

  //    string expected, actual;
  //    cin >> expected >> actual;
  //    if (expected != actual){
  //        error_mes({"functionX", expected, actual});
  //    } else{
  //        error_mes({"functionX","yes"});
  //    }

  // int j[] = {1,2};
  // auto t = j.size();
  // auto m = j.end() - j.begin();
  // bool k = (t==m);
  // cout << k << endl;

  //    int i = 42;
  //    n(&i);
  //    cout << i << endl;

  //    int i = 42, &m = i;
  //   n(i);
  //    bool t = (m == i);
  //    cout << t << endl;

  //    for (int i = 0; i<10;++i){
  //        cout << count_calls() << endl;
  //    }
  //    return 0;

  //    std::cout << "please input v1, v2" << std::endl;
  //    int v1 = 0, v2 = 0;
  //    std::cin >> v1 >> v2;
  //    std::cout << "the sum of "<< v1 << " and " << v2 << " is 12" << v1+v2
  //    << std::endl; return 0;

  //    int sum = 0, v = 50;dd
  //    while (v <= 100) {
  //        sum += v;
  //        ++v;
  //    }
  //    std::cout << sum << std::endl;

  //    int sum = 0;
  //    for (int v =1; v <= 10; ++v)
  //        sum += v;
  //    std::cout << sum << std::endl;

  //    int sum = 0, value = 0;
  //    while (std::cin >> value)
  //        sum += value;
  //    std::cout << sum << std::endl;
  //    return 0;

  //    int currnum = 0, num = 0;
  //    if (std::cin >> currnum){
  //        int cnt = 1;
  //        while (std::cin >> num){
  //
  //            if (currnum == num)
  //                ++cnt;
  //            else{
  //                std::cout << currnum << " apears " << cnt << " times " <<
  //                std::endl; currnum = num; cnt = 1;
  //            }
  //        }
  //        std::cout << currnum << " apears " << cnt << " times " <<
  //        std::endl;
  //    }
  //    return 0;

  //    Sales_item book;
  //    std::cin >> book;
  //    std::cout << book << std::endl;

  //    unsigned u = 42;
  //    int v = 10;
  //    std::cout << u-v << std::endl;
  //    std::cout << v-u << std::endl;

  //    int i = 100, sum = 0;
  //    for(i=0; i != 10; ++i)
  //        sum += i;
  //    std::cout << i << sum << std::endl;

  //    int i;
  //    int &k = i;
  //    i = 5;
  //    k = 10;
  //    std::cout << k << " " << i << std::endl;

  //    int i = 10;
  //    int *p = &i, *l;
  //    l = &i;
  //    std::cout << l << std::endl;
  //    return 0;

  //    string s;
  //    cin >> s;
  //    cout << s << endl;
  //    return 0;

  //    string line;
  //    while(getline(cin, line))
  //        cout << line << endl;
  //    return 0;
  //    string s4 = "hello";
  //    string k = s4 + 'a' + "world" + 's';
  //    string s;
  //    cin >> s;
  //    for(auto &c : s)
  //        c = toupper(c);
  //    cout << s << endl;
  //    return 0;

  //    const string hexadecimal = "0123456789ABCDEF";
  //    string result;
  //    string::size_type n;
  //    while(cin >> n)
  //        if (n < hexadecimal.size())
  //            result += hexadecimal[n];
  //    cout << result << endl;

  //    string n;
  //    cin >> n;
  //    for (auto &s:n)
  //        s = 'X';
  //    cout << n;

  //    string n;
  //    cin >> n;
  //    int i = 0;
  //    while(n.size()>i){
  //        n[i] = 'x';
  //        ++i;
  //    }
  //        n[i-1] = 'x';
  //    cout << n;
  //    cout << n[0] << endl;

  //    string n,m;
  //    cin >> n;
  //    for(auto &s:n){
  //        if (!ispunct(s)){
  //            m += s;
  //        }
  //    }
  //    cout << m << endl;

  //    vector<int> s;
  //    int n;
  //    while(cin >> n){
  //        s.push_back(n);
  //    }
  //    for (auto i : s){
  //        cout << i << " "<< endl;
  //    }

  //    vector<int> s;
  //    cout << s[1] << endl;

  //    string s;
  //    vector<string> n;
  //    while(cin >> s){
  //        for (auto &t:s){
  //            t = toupper(t);
  //        }
  //        n.push_back(s);
  //
  //    }
  //    for (auto &t:n){
  //        cout << t << endl;
  //    }

  //    string s;
  //    vector<string> n;
  //    while(cin >> s){
  //        n.push_back(s);
  //    }
  //    for (auto &t:n){
  //        for (auto &m:t){
  //            m = toupper(m);
  //        }
  //
  //
  //    }
  //    for (auto &t:n){
  //        cout << t << "\n" << endl;
  //    }

  //    vector<int> s = {1,2,3,4};
  //    for(auto it = s.begin(); it != s.end(); ++it){
  //        *it *= 2;
  //    }
  //    for(auto &t:s){
  //        cout << t << endl;
  //    }

  //    constexpr size_t m = 10;
  //    int a[m];
  //    for (size_t t = 0; t < m; ++t){
  //        a[t] = t;
  //    }
  //    for(auto s : a){
  //        cout << s << endl;
  //    }
  //    const char k = 'kkkk';

  //    const char a[4] = "sss";
  //    cout << a <<endl;
  //    cout << a[2] <<endl;

  //    const char *p = "ssss";
  //    if (p&&*p){
  //        cout << p << endl;
  //    }

  //    int a, b, c, d;
  //    cin >> a >> b >> c >> d;
  //    int i;
  //    double b;
  //    b = i = 3.6;
  //    cout << i << b << endl;

  //    int *p,m;
  //    auto c = sizeof *p;
  //    cout << c << endl;

  //    int *p;
  //    int *q =p;
  //    cout << q << " " << p << endl;

  //    string k = "_ssss";
  //    for (auto &m : k){
  //        if (m != '_'){
  //            continue;
  //        }
  //        cout << k <<endl;
  //    }
}
